package com.csaba.connector.service;

import com.csaba.connector.BankService;
import com.csaba.connector.model.Customer;
import com.csaba.connector.model.Session;

/**
 * Login service is used for authenticating the customer in a new session.
 * <p>The session is created during the login, that's why the {@link #execute(Session)}
 * method should get null as a parameter.
 * <p>In certain cases there are more screens / steps related to the login procedure. Typical
 * case is when the authetication follows challange-response method, or SMS based one time 
 * password is used combined with static PIN/password. For handling such kind of process flow 
 * you should use {@link com.csaba.connnector.FlowControlException} to cause exceptional flows. 
 * Special process flows should be handled in the bank specific GUI components.
 * @author user
 *s
 */
public interface LoginService extends BankService
{
	public Session getSession();

	public void setCustomer( Customer customer );
}
